Subject: GK
Envivo Bio, Inc.; Confidential
Figure 1 is an interactive figure showing the microbial community
composition in each collected sample. Here, each color and shade
corresponds to a different genus. For reference, domestic dogs
(Canis familiaris) and gray wolves (Canis lupus) are
different species that belong to the same genus (Canis).
You can interact with this figure by:
- Hovering the cursor over a color in the stacked bar to see the
taxonomic identity, sample type, and relative abundance corresponding to
that color and bar
- Clicking and dragging the cursor over a portion of the figure to
zoom
- Single-clicking a genus’s name in the legend to remove that genus
from the figure
- Double-clicking (very quickly) a genus’s name in the legend
to only show that genus
Figure 1: Microbial community composition of
collected saliva and CapScan samples. CapScan samples are ordered from
proximal to distal intestine (i.e., increasing
distance from mouth). Taxonomic composition is reported at the genus
rank. Genera present at <1% relative abundance across all samples are
reported as “Other genera”. Note: Blue = Firmicutes;
Yellow = Actinomycetes; Green = Bacteroidetes; Red =
Proteobacteria; Purple = all other phyla. Shades of the same
color (except purple) correspond to different genera from the same
phylum.
Figure 2 is an interactive figure showing the microbial community
composition at higher taxononomic resolution. Here, each row corresponds
to a unique microbe.
You can interact with this figure by:
- Hovering the cursor over a cell to see that microbe’s genus and
species (and strain when available), relative abundance, and full
taxonomic classification
- Clicking and dragging the cursor over a portion of the figure to
zoom
Figure 2: Heat map showing relative abundance of
microbes in each sample (N = 224 total identified). Each row corresponds
to a unique microbe and each column corresponds to an individual sample.
Note the relative abundance colorscale is in log units.
1.3 Notable microbe detected
- Eubacterium rectale:
- Recently shown to produce a molecule (lauroyl tryptamine) that
structurally mimics a signaling molecule produced by humans; lauroyl
tryptamine inhibits a human protein involved in triggering an immune
response and inflammation (Chang et al., 2021)
- Most relatively abundant microbe in CapScan sample (~11%)
1.4 References
Chang, F.Y., Siuti, P., Laurent, S., Williams, T., Glassey, E.,
Sailer, A.W., et al. (2021) Gut-inhabiting Clostridia build
human GPCR ligands by conjugating neurotransmitters with diet- and
human-derived fatty acids. Nat Microbiol 6: 792–805.
LS0tCnRpdGxlOiAiPGJyPiBUYXhvbm9taWMgcHJvZmlsaW5nIG9mIGJhY3RlcmlhbCBhbmQgYXJjaGFlYWwgY29tbXVuaXRpZXMgZnJvbSBzYWxpdmEgYW5kIENhcFNjYW4tc2FtcGxlZCBndXQgbWV0YWdlbm9tZXMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgotLS0KCjxzdHlsZT4KZGl2LmhpZ2hsaWdodCB7CmJhY2tncm91bmQtY29sb3I6ICNGMkYyRjI7CnBhZGRpbmc6IDBweDsKYm9yZGVyLXJhZGl1czogMnB4Owp9Cgo8L3N0eWxlPgoKIyMjIDxiPjxpPlN1YmplY3Q6IEdLPC9iPjwvaT4KKkVudml2byBCaW8sIEluYy47IENvbmZpZGVudGlhbCoKCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpgYGB7ciBhZGQgbG9nbywgZWNobyA9IEZBTFNFfQpsb2dvX3BhdGggPC0gIi4uL2xvZ28vZW52aXZvLnN2ZyIKCmh0bWx0b29sczo6aW1nKHNyYyA9IGtuaXRyOjppbWFnZV91cmkobG9nb19wYXRoKSwgCiAgICAgICAgICAgICAgIGFsdCA9ICJsb2dvIiwgCiAgICAgICAgICAgICAgIHN0eWxlID0gInBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgcGFkZGluZzoxMHB4OyB3aWR0aDogMTQ1cHg7IGhlaWdodDogNDJweCIpCmBgYAoKYGBge3IgbG9hZCBwYWNrYWdlcywgaW5jbHVkZSA9IEZBTFNFfQojIExpc3QgcmVxdWlyZWQgcGFja2FnZXMKY3JhblBhY2thZ2VzIDwtIGMoIkJpb2NNYW5hZ2VyIiwgImdncGxvdDIiLCAiZHBseXIiLCAidGlkeXIiLAogICAgICAgICAgICAgICAgICAiYXBlIiwgImdncGxvdDIiLCAicmVzaGFwZTIiLCAicGxvdGx5IiwgImhlYXRtYXBseSIpCmJpb2NQYWNrYWdlcyA8LSBjKCJwaHlsb3NlcSIsICJCaW9zdHJpbmdzIikKCiMgSW5zdGFsbCBtaXNzaW5nIENSQU4gcGFja2FnZXMKaW5zdGFsbGVkQ1JBTiA8LSBjcmFuUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRDUkFOID09IEZBTFNFKSkgewogIGluc3RhbGwucGFja2FnZXMoY3JhblBhY2thZ2VzWyFpbnN0YWxsZWRDUkFOXSwKICAgICAgICAgICAgICAgICAgIHJlcG9zID0gJ2h0dHA6Ly9jcmFuLnVzLnItcHJvamVjdC5vcmcnKQp9CgojIEluc3RhbGwgbWlzc2luZyBCaW9jb25kdWN0b3IgcGFja2FnZXMKaW5zdGFsbGVkQmlvYyA8LSBiaW9jUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRCaW9jID09IEZBTFNFKSkgewogIEJpb2NNYW5hZ2VyOjppbnN0YWxsKGJpb2NQYWNrYWdlc1shaW5zdGFsbGVkQmlvY10pCn0KCiMgTG9hZCBwYWNrYWdlcwpsYXBwbHkoYyhjcmFuUGFja2FnZXMsIGJpb2NQYWNrYWdlcyksIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKYGBgCgpgYGB7ciBsb2FkIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2FkIENvc21vc0lEIGRhdGEgYW5kIGZvcm1hdHRlZCBtZXRhZGF0YQpjb3Ntb3MgPC0gcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL0NQMDQ2MThfY29zbW9zaWRfMjAyMjA5MDYuY3N2IikKbWV0YSA8LSByZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvQ1AwNDYxOF9tZXRhZGF0YS5jc3YiKQpgYGAKCmBgYHtyIGZvcm1hdCBkYXRhLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSB0YXhfdGFibGUgYW5kIG90dV90YWJsZSBvYmplY3RzCnRheCA8LSBjb3Ntb3MgJT4lCiAgc2VsZWN0KFBoeWx1bSwgQ2xhc3MsIE9yZGVyLCBGYW1pbHksIEdlbnVzLCBTcGVjaWVzLCBTdHJhaW4pICU+JQogIGFzLm1hdHJpeCAlPiUKICB0YXhfdGFibGUKCnN0YXJ0X2luZCA8LSBncmVwKCJTdHJhaW4iLCBjb2xuYW1lcyhjb3Ntb3MpKSsxCnN0b3BfaW5kIDwtIG5jb2woY29zbW9zKS0yCmFidW5kYW5jZV9zY29yZXMgPC0gY29zbW9zWyxzdGFydF9pbmQ6c3RvcF9pbmRdICU+JSBvdHVfdGFibGUoLiwgdGF4YV9hcmVfcm93cyA9IFRSVUUpCgojIFJlZm9ybWF0IHNhbXBsZSBuYW1lcyBhbmQgbWV0YWRhdGEgc2FtcGxlIG5hbWVzIHNvIHRoZXkgbWF0Y2gKY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgPC0gY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgJT4lCiAgZ3N1YigiWCIsICIiLCAuKSAlPiUKICBnc3ViKCJfLioiLCAiIiwgLikgJT4lCiAgcGFzdGUwKCJFQl8iLCAuKQoKcm93Lm5hbWVzKG1ldGEpIDwtIG1ldGEgJT4lCiAgcHVsbChTYW1wbGVfbnVtYmVyKSAlPiUKICBwYXN0ZTAoIkVCXyIsIC4pCgpzYW1fZGF0YSA8LSBzYW1wbGVfZGF0YShtZXRhKQpgYGAKCmBgYHtyIGJ1aWxkIHBoeWxvc2VxLCBpbmNsdWRlID0gRkFMU0V9CiMgQnVpbGQgcGh5bG9zZXEgb2JqZWN0CnBzIDwtIHBoeWxvc2VxKHRheCwgYWJ1bmRhbmNlX3Njb3Jlcywgc2FtX2RhdGEpCmBgYAoKYGBge3IgdHJhbnNmb3JtIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2cgdHJhbnNmb3JtCnBzTG9nIDwtIHBzICU+JSB0cmFuc2Zvcm1fc2FtcGxlX2NvdW50cyguLCBmdW5jdGlvbih4KSBsb2coeCArIDEsIGJhc2UgPSAxMCkpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNSQSA8LSBwcyAlPiUgdHJhbnNmb3JtX3NhbXBsZV9jb3VudHMoLiwgZnVuY3Rpb24oeCkgeC9zdW0oeCkqMTAwKQpgYGAKCmBgYHtyIHJhbmsgcGh5bGEsIGluY2x1ZGUgPSBGQUxTRX0KcGh5X3JhbmsgPC0gcHNSQSAlPiUKICB0YXhfZ2xvbSguLCB0YXhyYW5rID0gIlBoeWx1bSIpICU+JQogIHBzbWVsdCAlPiUKICBncm91cF9ieShQaHlsdW0pICU+JQogIHN1bW1hcmlzZShtZWRpYW4gPSBtZWRpYW4oQWJ1bmRhbmNlKSkKCnBoeV9yYW5rICU+JSBhcnJhbmdlKGRlc2MobWVkaWFuKSkKYGBgCgpgYGB7ciBzdWJqZWN0IHN1YnNldCwgaW5jbHVkZSA9IEZBTFNFfQojIFNldCBzdWJqZWN0CnN1YmplY3QgPC0gIkdLIgoKIyBTdWJzZXQgdG8gc3ViamVjdCBzYW1wbGVzIGFuZCBkcm9wIG1pc3NpbmcgdGF4YQpwc1N1YiA8LSBzdWJzZXRfc2FtcGxlcyhwcywgU3ViamVjdCA9PSBzdWJqZWN0KSAlPiUKICBwcnVuZV90YXhhKHRheGFfc3VtcyguKSA+IDAsIC4pCgojIEFkZCBwbG90IGxhYmVsIGZvciBlYWNoIHNhbXBsZQpzYW1wbGVfZGF0YShwc1N1YikkUGxvdF9sYWJlbCA8LSBwYXN0ZTAoc2FtcGxlX25hbWVzKHBzU3ViKSwgIiAoIiwgc2FtcGxlX2RhdGEocHNTdWIpJFNhbXBsZV90eXBlLCAiKSIpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNTdWJfcmEgPC0gcHNTdWIgJT4lIHRyYW5zZm9ybV9zYW1wbGVfY291bnRzKC4sIGZ1bmN0aW9uKHgpIHgvc3VtKHgpKjEwMCkKYGBgCgpgYGB7ciBwbG90IGJhciwgaW5jbHVkZSA9IEZBTFNFfQojIERlZmluZSBOT1QgSU4gb3BlcmF0b3IKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKCiMgQWdnbG9tZXJhdGUgYXQgR2VudXMgYW5kIG1lbHQKdGF4cmFuayA8LSAiR2VudXMiCm1lbHQgPC0gcHNTdWJfcmEgJT4lIHRheF9nbG9tKC4sIHRheHJhbmsgPSB0YXhyYW5rKSAlPiUgcHNtZWx0CgojIERlZmluZSBtYWpvciBwaHlsYQptYWpvcl9waHkgPC0gYygiRmlybWljdXRlcyIsICJBY3Rpbm9iYWN0ZXJpYSIsICJCYWN0ZXJvaWRldGVzIiwgIlByb3Rlb2JhY3RlcmlhIikKCiMgSWRlbnRpZnkgZ2VuZXJhIHByZXNlbnQgaW4gPDElIHJlbGF0aXZlIGFidW5kYW5jZSBpbiBhbGwgc2FtcGxlcwpyYXJlX2dlbmVyYSA8LSBtZWx0ICU+JQogIGdyb3VwX2J5KFNhbXBsZV9udW1iZXIsIEdlbnVzKSAlPiUKICBzdW1tYXJpemUoc3VtID0gc3VtKEFidW5kYW5jZSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShHZW51cykgJT4lCiAgc3VtbWFyaXplKG1heCA9IG1heChzdW0pKSAlPiUKICBmaWx0ZXIobWF4IDwgMSkgJT4lCiAgcHVsbChHZW51cykKCiMgQ3JlYXRlIG5ldyBjb2x1bW4gY29udGFpbmluZyBuYW1lIG9mIGdlbnVzIGlmIGFib3ZlIGN1dG9mZiBvciAiT3RoZXIgZ2VuZXJhIiBpZiBub3QKZGYgPC0gbWVsdCAlPiUKICBtdXRhdGUoUGh5X2dyb3VwID0gY2FzZV93aGVuKFBoeWx1bSAlIWluJSBtYWpvcl9waHkgfiAiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBQaHlsdW0pLAogICAgICAgICBQaHlfZ3JvdXAgPSBjYXNlX3doZW4oR2VudXMgJWluJSByYXJlX2dlbmVyYSB+ICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IFBoeV9ncm91cCksCiAgICAgICAgIFRheF9sYWJlbCA9IGNhc2Vfd2hlbihHZW51cyAlaW4lIHJhcmVfZ2VuZXJhIH4gIkFhT3RoZXIgZ2VuZXJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBHZW51cykpICU+JQogIGdyb3VwX2J5KFN1YmplY3QpICU+JQogIGFycmFuZ2UoU3ViamVjdCwgU2FtcGxlX3R5cGUpCgojIERlZmluZSBvcmRlcgpwaHlfb3JkZXIgPC0gYygiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAiRmlybWljdXRlcyIpICU+JSByZXYKCmdlbl9vcmRlciA8LSBkZiAlPiUKICBzZWxlY3QoUGh5X2dyb3VwLCBUYXhfbGFiZWwpICU+JQogIG11dGF0ZShPcmRlciA9IG1hdGNoKFBoeV9ncm91cCwgcGh5X29yZGVyKSkgJT4lCiAgYXJyYW5nZShPcmRlciwgZGVzYyhUYXhfbGFiZWwpKSAlPiUKICBkaXN0aW5jdCAlPiUKICBwdWxsKFRheF9sYWJlbCkKCmdlbl9vcmRlciA8LSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIGdlbl9vcmRlciksIGxldmVscyA9IGdzdWIoIl5BYSIsICIiLCBnZW5fb3JkZXIpKSAjIHRoZSBBYSBpcyB0byBtYWtlIHN1cmUgIk90aGVyIiBpcyBwbG90dGVkIGF0IHRoZSB0b3AKCmRmIDwtIGRmICU+JQogIG11dGF0ZShUYXhfbGFiZWwgPSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIFRheF9sYWJlbCksIGxldmVscyA9IGdlbl9vcmRlcikpCgojIERlZmluZSBjb2xvcnMKcGh5X2NvbG9yIDwtIGRhdGEuZnJhbWUoUGh5bHVtID0gYygiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWN0ZXJvaWRldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiksCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VfY29sb3IgPSBjKCIjRkZCNzI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiM4MzJDRkYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjMDcyQUM4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNFOTNCNEYiKSkKCnBoeV9jb2xvciA8LSBwaHlfY29sb3JbbWF0Y2gocGh5X29yZGVyLCBwaHlfY29sb3IkUGh5bHVtKSxdCgojIERhdGEgZnJhbWUgYXMgaW5wdXQsIGRhdGEgZnJhbWUgd2l0aCBuZXcgY29sdW1uIG9mIGhleCBjb2RlcyBhcyBvdXRwdXQKY29sX3BhbGV0dGUgPC0gZGYgJT4lCiAgc2VsZWN0KFBoeV9ncm91cCwgVGF4X2xhYmVsKSAlPiUKICBkaXN0aW5jdCAlPiUKICBtdXRhdGUoSGV4X2NvZGUgPSBOQSkKCgpmb3IocGh5IGluIHBoeV9jb2xvciRQaHlsdW0pIHsKICB0ZXN0IDwtIGNvbF9wYWxldHRlICU+JQogICAgZmlsdGVyKFBoeV9ncm91cCA9PSBwaHkpICU+JQogICAgcHVsbChUYXhfbGFiZWwpICU+JQogICAgZHJvcGxldmVscyAlPiUKICAgIGxldmVscwogIAogIHRheC5jb2xvciA8LSBjb2xvclJhbXBQYWxldHRlKGMocGh5X2NvbG9yJEJhc2VfY29sb3JbbWF0Y2gocGh5LCBwaHlfY29sb3IkUGh5bHVtKV0sICJ3aGl0ZSIpKQogIGNvbHRlc3QgPC0gdGF4LmNvbG9yKGxlbmd0aCh0ZXN0KSsyKSAlPiUKICAgIC5bLWxlbmd0aCguKV0KICBjb2xfcGFsZXR0ZSRIZXhfY29kZVttYXRjaCh0ZXN0LCBjb2xfcGFsZXR0ZSRUYXhfbGFiZWwpXSA8LSBjb2x0ZXN0Cn0KCmNvbF9wYWxldHRlIDwtIGNvbF9wYWxldHRlICU+JSBhcnJhbmdlKGZhY3RvcihUYXhfbGFiZWwsIGxldmVscyA9IGdlbl9vcmRlcikpCmBgYAoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMSBPdmVydmlldyBvZiBtaWNyb2JpYWwgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgoKRmlndXJlIDEgaXMgYW4gaW50ZXJhY3RpdmUgZmlndXJlIHNob3dpbmcgdGhlIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24gaW4gZWFjaCBjb2xsZWN0ZWQgc2FtcGxlLiBIZXJlLCBlYWNoIGNvbG9yIGFuZCBzaGFkZSBjb3JyZXNwb25kcyB0byBhIGRpZmZlcmVudCBnZW51cy4gRm9yIHJlZmVyZW5jZSwgZG9tZXN0aWMgZG9ncyAoKkNhbmlzIGZhbWlsaWFyaXMqKSBhbmQgZ3JheSB3b2x2ZXMgKCpDYW5pcyBsdXB1cyopIGFyZSBkaWZmZXJlbnQgc3BlY2llcyB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBnZW51cyAoKkNhbmlzKikuCjxicj48YnI+CllvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGZpZ3VyZSBieToKCiogSG92ZXJpbmcgdGhlIGN1cnNvciBvdmVyIGEgY29sb3IgaW4gdGhlIHN0YWNrZWQgYmFyIHRvIHNlZSB0aGUgdGF4b25vbWljIGlkZW50aXR5LCBzYW1wbGUgdHlwZSwgYW5kIHJlbGF0aXZlIGFidW5kYW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoYXQgY29sb3IgYW5kIGJhcgoqIENsaWNraW5nIGFuZCBkcmFnZ2luZyB0aGUgY3Vyc29yIG92ZXIgYSBwb3J0aW9uIG9mIHRoZSBmaWd1cmUgdG8gem9vbQoqIFNpbmdsZS1jbGlja2luZyBhIGdlbnVzJ3MgbmFtZSBpbiB0aGUgbGVnZW5kIHRvIHJlbW92ZSB0aGF0IGdlbnVzIGZyb20gdGhlIGZpZ3VyZQoqIERvdWJsZS1jbGlja2luZyAoPHU+dmVyeSBxdWlja2x5PC91PikgYSBnZW51cydzIG5hbWUgaW4gdGhlIGxlZ2VuZCB0byBvbmx5IHNob3cgdGhhdCBnZW51cwpgYGB7ciwgb3V0LndpZHRoID0gIjEwMCUiLCBlY2hvID0gRkFMU0V9CiMgUGxvdApwQmFyIDwtIHBsb3RfbHkoZGYsIHggPSB+UGxvdF9sYWJlbCwgeSA9IH5BYnVuZGFuY2UsIHR5cGUgPSAiYmFyIiwKICAgICAgICAgICAgIGNvbG9yID0gflRheF9sYWJlbCwgY29sb3JzID0gY29sX3BhbGV0dGUkSGV4X2NvZGUsCiAgICAgICAgICAgICB0ZXh0cG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICAgICB0ZXh0ID0gfnBhc3RlKCI8Yj5HZW51czo8L2I+IiwgVGF4X2xhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPjxicj4iLCAiPGI+U2FtcGxlIHR5cGU6PC9iPiIsIFNhbXBsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPiIsICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiIsIHBhc3RlMChyb3VuZChBYnVuZGFuY2UsIGRpZ2l0cyA9IDEpLCAiJSIpKSwKICAgICAgICAgICAgIGhvdmVyaW5mbyA9ICJ0ZXh0IikgJT4lCiAgbGF5b3V0KHhheGlzID0gbGlzdCh0aXRsZSA9ICI8Yj5TYW1wbGU8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIjxiPlJlbGF0aXZlIGFidW5kYW5jZSAoJSk8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgYmFybW9kZSA9ICJzdGFjayIsCiAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICJBcmlhbCIpKQoKcEJhciR4JGxheW91dCR5YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBCYXIKYGBgCioqRmlndXJlIDE6KiogTWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBvZiBjb2xsZWN0ZWQgc2FsaXZhIGFuZCBDYXBTY2FuIHNhbXBsZXMuIENhcFNjYW4gc2FtcGxlcyBhcmUgb3JkZXJlZCBmcm9tIHByb3hpbWFsIHRvIGRpc3RhbCBpbnRlc3RpbmUgKCppKi4qZSouLCBpbmNyZWFzaW5nIGRpc3RhbmNlIGZyb20gbW91dGgpLiBUYXhvbm9taWMgY29tcG9zaXRpb24gaXMgcmVwb3J0ZWQgYXQgdGhlIGdlbnVzIHJhbmsuIEdlbmVyYSBwcmVzZW50IGF0IDwxJSByZWxhdGl2ZSBhYnVuZGFuY2UgYWNyb3NzIGFsbCBzYW1wbGVzIGFyZSByZXBvcnRlZCBhcyAiT3RoZXIgZ2VuZXJhIi4gPHU+Tm90ZTo8L3U+IEJsdWUgPSAqRmlybWljdXRlcyo7IFllbGxvdyA9ICpBY3Rpbm9teWNldGVzKjsgR3JlZW4gPSAqQmFjdGVyb2lkZXRlcyo7IFJlZCA9ICpQcm90ZW9iYWN0ZXJpYSo7IFB1cnBsZSA9IGFsbCBvdGhlciBwaHlsYS4gU2hhZGVzIG9mIHRoZSBzYW1lIGNvbG9yIChleGNlcHQgcHVycGxlKSBjb3JyZXNwb25kIHRvIGRpZmZlcmVudCBnZW5lcmEgZnJvbSB0aGUgc2FtZSBwaHlsdW0uCgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQojIE9yZGluYXRpb24tYmFzZWQKI3BIZWF0X29yZCA8LSBwbG90X2hlYXRtYXAocHNTdWJfcmEsIG1ldGhvZCA9ICJOTURTIiwgZGlzdGFuY2UgPSAiYnJheSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGEubGFiZWwgPSAiU3RyYWluIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LmxhYmVsID0gMzAwKQojCiMgUmV0cmlldmUgcm93IGFuZCB0YXhvbiBvcmRlcnMKI3Jvd19vcmRlciA8LSBwSGVhdF9vcmQkcGxvdF9lbnYkdGF4YS5vcmRlciAlPiUgcmV2CiN0YXhfb3JkZXIgPC0gdGF4X3RhYmxlKHBzU3ViX3JhKVttYXRjaChyb3dfb3JkZXIsIHJvd25hbWVzKHRheF90YWJsZShwc1N1Yl9yYSkpKSxdICU+JQojICBhcy5kYXRhLmZyYW1lICU+JQojICBtdXRhdGUodGF4b24gPSByb3duYW1lcyguKSwKIyAgICAgICAgIEFidW5kYW5jZSA9IDEsCiMgICAgICAgICBTYW1wbGUgPSBzdWJqZWN0KQojIE9yZGVyIGJ5IHJlbGF0aXZlIGFidW5kYW5jZSB3aXRoaW4gc2FtcGxlcwpyb3dfb3JkZXIgPC0gb3R1X3RhYmxlKHBzU3ViX3JhKSAlPiUKICBhcy5kYXRhLmZyYW1lICU+JQogIGFycmFuZ2UoRUJfMjU5LCBFQl8yNjAKICAgICAgICAgICkgJT4lCiAgcm93bmFtZXMKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQojIFByZXBhcmUgZGF0YQp4IDwtIHBzU3ViX3JhICU+JSBvdHVfdGFibGUgJT4lIGFzLmRhdGEuZnJhbWUKY29sbmFtZXMoeCkgPC0gbGFwcGx5KGNvbG5hbWVzKHgpLCBncmVwLCBzYW1wbGVfZGF0YShwc1N1Yl9yYSkkUGxvdF9sYWJlbCwgdmFsdWUgPSBUUlVFKSAlPiUgdW5saXN0CgojIEFkZCB0YXhvbm9teQp4IDwtIGNiaW5kKHgsIHRheF90YWJsZShwc1N1Yl9yYSkpCgojIFJlb3JkZXIgcm93cyBhbmQgY29sdW1ucyB0byBtYXRjaCBvcmRpbmF0aW9uCnggPC0geFttYXRjaChyb3dfb3JkZXIsIHJvd25hbWVzKHgpKSxdCgojIFNldCBob3ZlcnRleHQKbnNhbXAgPC0gbnNhbXBsZXMocHNTdWJfcmEpCmhvdmVyX3N0cmFpbiA8LSB4WywgMTpuc2FtcF0KaG92ZXJfc3RyYWluW10gPC0gcGFzdGUwKCI8Yj5NaWNyb2JlOjwvYj4gIiwgeCRTdHJhaW4sICJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiPGI+UmVsYXRpdmUgYWJ1bmRhbmNlOjwvYj4gIikKaG92ZXJfc3RyYWluIDwtIGFzLm1hdHJpeChob3Zlcl9zdHJhaW4pCgpob3Zlcl9hYnVuZCA8LSB4WywgMTpuc2FtcF0gJT4lIHJvdW5kKC4sIGRpZ2l0cyA9IDIpICU+JSBhcy5kYXRhLmZyYW1lCmhvdmVyX2FidW5kIDwtIGFwcGx5KGhvdmVyX2FidW5kLCAyLCBwYXN0ZTAsICIlIikKaG92ZXJfYWJ1bmQgPC0gYXMubWF0cml4KGhvdmVyX2FidW5kKQoKaG92ZXJfdGF4IDwtIHhbLCAxOm5zYW1wXQpob3Zlcl90YXhbXSA8LSBwYXN0ZTAoIlxuIFxuPGI+UGh5bHVtOjwvYj4gIiwgeCRQaHlsdW0sICJcbiIsCiAgICAgICAgICAgICAgICAgICAiPGI+Q2xhc3M6PC9iPiAiLCB4JENsYXNzLCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPk9yZGVyOjwvYj4gIiwgeCRPcmRlciwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5GYW1pbHk6PC9iPiAiLCB4JEZhbWlseSwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5HZW51czo8L2I+ICIsIHgkR2VudXMsICJcbiIpCmhvdmVyX3RheCA8LSBhcy5tYXRyaXgoaG92ZXJfdGF4KQoKaG92ZXJ0ZXh0IDwtIG1hdHJpeChwYXN0ZTAoaG92ZXJfc3RyYWluLCBob3Zlcl9hYnVuZCwgaG92ZXJfdGF4KSwKICAgICAgICAgICAgICAgIG5yb3cgPSBucm93KGhvdmVyX3RheCksIG5jb2wgPSBuY29sKGhvdmVyX3RheCkpCgojIFBlcmZvcm0gbG9nMTAgdHJhbnNmb3JtYXRpb24gb24gcmVsYXRpdmUgYWJ1bmRhbmNlcwpkYXRhIDwtIGxvZyh4WywgMTpuc2FtcF0sIGJhc2UgPSAxMCkKZGF0YVtzYXBwbHkoZGF0YSwgaXMuaW5maW5pdGUpXSA8LSBOQQpgYGAKPGJyPjxicj4KCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+CiMjIyAxLjIgSGlnaC1yZXNvbHV0aW9uIHNuYXBzaG90IG9mIGNvbW11bml0eSBjb21wb3NpdGlvbgo8L2Rpdj4KRmlndXJlIDIgaXMgYW4gaW50ZXJhY3RpdmUgZmlndXJlIHNob3dpbmcgdGhlIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24gYXQgaGlnaGVyIHRheG9ub25vbWljIHJlc29sdXRpb24uIEhlcmUsIGVhY2ggcm93IGNvcnJlc3BvbmRzIHRvIGEgdW5pcXVlIG1pY3JvYmUuCjxicj48YnI+CllvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGZpZ3VyZSBieToKCiogSG92ZXJpbmcgdGhlIGN1cnNvciBvdmVyIGEgY2VsbCB0byBzZWUgdGhhdCBtaWNyb2JlJ3MgZ2VudXMgYW5kIHNwZWNpZXMgKGFuZCBzdHJhaW4gd2hlbiBhdmFpbGFibGUpLCByZWxhdGl2ZSBhYnVuZGFuY2UsIGFuZCBmdWxsIHRheG9ub21pYyBjbGFzc2lmaWNhdGlvbgoqIENsaWNraW5nIGFuZCBkcmFnZ2luZyB0aGUgY3Vyc29yIG92ZXIgYSBwb3J0aW9uIG9mIHRoZSBmaWd1cmUgdG8gem9vbQoKPGJyPjxicj4KYGBge3IsIG91dC5oZWlnaHQgPSAiNzUwcHgiLCBlY2hvID0gRkFMU0V9CiMgU2V0IHNhbXBsZSBuYW1lcwojY29sbmFtZXMoZGF0YSkgPC0gYygiRUJfMjY5IChzYWxpdmEpIiwgIkVCXzI3MCAoQ2FwU2NhbikiLCAiRUJfMjcxIChDYXBTY2FuKSIsCiMgICAgICAgICAgICAgICAgICAgICJFQl8yNzIgKENhcFNjYW4pIiwgIkVCXzI3MyAoQ2FwU2NhbikiLCAiRUJfMjc0IChzdG9vbCkiKQoKIyBQcmVwYXJlIHRheG9ub215IHJvdyBzaWRlCnJvd19zaWRlIDwtIHggJT4lIHNlbGVjdChQaHlsdW0pCnJvd19zaWRlJFBoeWx1bVtyb3dfc2lkZSRQaHlsdW0gJSFpbiUgbWFqb3JfcGh5XSA8LSAiT3RoZXIgcGh5bGEiCnJvd19zaWRlJFBoeWx1bSA8LSBmYWN0b3Iocm93X3NpZGUkUGh5bHVtLCBsZXZlbHMgPSBjKCJPdGhlciBwaHlsYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm90ZW9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWN0ZXJvaWRldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGlub2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpcm1pY3V0ZXMiKSkKCiMgUGxvdApwSGVhdCA8LSBoZWF0bWFwbHkoZGF0YSwKICAgICAgICAgICAgICAgICAgIFJvd3YgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgIENvbHYgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHZpcmlkaXM6OnZpcmlkaXMoMTApLAogICAgICAgICAgICAgICAgICAgcm93X3NpZGVfY29sb3JzID0gcm93X3NpZGUsCiAgICAgICAgICAgICAgICAgICByb3dfc2lkZV9wYWxldHRlID0gYygiQWN0aW5vYmFjdGVyaWEiID0gIiNGRkI3MjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiID0gIiM2NEM2MkEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpcm1pY3V0ZXMiID0gIiMwNzJBQzgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiA9ICIjRTkzQjRGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBwaHlsYSIgPSAiIzgzMkNGRiIpLAogICAgICAgICAgICAgICAgICAgc3VicGxvdF9tYXJnaW4gPSAwLjAxLAogICAgICAgICAgICAgICAgICAgc3VicGxvdF93aWR0aHMgPSBjKDAuOSwgMC4wNyksCiAgICAgICAgICAgICAgICAgICBzaWRlX2NvbG9yX2NvbG9yYmFyX2xlbiA9IDAuMywKICAgICAgICAgICAgICAgICAgIHBsb3RfbWV0aG9kID0gInBsb3RseSIsCiAgICAgICAgICAgICAgICAgICBjdXN0b21faG92ZXJ0ZXh0ID0gaG92ZXJ0ZXh0LAogICAgICAgICAgICAgICAgICAgeGxhYiA9ICI8Yj5TYW1wbGU8L2I+IiwKICAgICAgICAgICAgICAgICAgIHlsYWIgPSAiPGI+TWljcm9iZTwvYj4iLAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfeHBvcyA9IDEuMDE5LAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfeXBvcyA9IDAuNSwKICAgICAgICAgICAgICAgICAgIGNvbG9yYmFyX2xlbiA9IDAuMykgJT4lCiAgbGF5b3V0KHhheGlzID0gbGlzdChzaG93Z3JpZCA9IEZBTFNFKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHNob3dncmlkID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICBzaG93dGlja2xhYmVscyA9IEZBTFNFKSwKICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIkFyaWFsIikpICU+JQogIGNvbG9yYmFyKHRpdGxlID0gIlJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICAgICAgdGlja3ZhbHMgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICB0aWNrdGV4dCA9IGMoIjAuMSUiLCAiMSUiLCAiMTAlIikpCgojIEZvcm1hdCByb3cgc2lkZQpwSGVhdCR4JGxheW91dCR4YXhpczIkdGlja3RleHQgPC0gIlBoeWx1bSIKcEhlYXQkeCRsYXlvdXQkeGF4aXMkbGluZWNvbG9yIDwtICIjMDAwMDAwIgpwSGVhdCR4JGxheW91dCR4YXhpczIkbGluZWNvbG9yIDwtICIjMDAwMDAwIgpwSGVhdCR4JGxheW91dCR5YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JGxlZ2VuZCR5YW5jaG9yIDwtICJib3R0b20iCnBIZWF0CmBgYAoqKkZpZ3VyZSAyOioqIEhlYXQgbWFwIHNob3dpbmcgcmVsYXRpdmUgYWJ1bmRhbmNlIG9mIG1pY3JvYmVzIGluIGVhY2ggc2FtcGxlIChOID0gMjI0IHRvdGFsIGlkZW50aWZpZWQpLiBFYWNoIHJvdyBjb3JyZXNwb25kcyB0byBhIHVuaXF1ZSBtaWNyb2JlIGFuZCBlYWNoIGNvbHVtbiBjb3JyZXNwb25kcyB0byBhbiBpbmRpdmlkdWFsIHNhbXBsZS4gTm90ZSB0aGUgcmVsYXRpdmUgYWJ1bmRhbmNlIGNvbG9yc2NhbGUgaXMgaW4gbG9nIHVuaXRzLgoKPGJyPjxicj4KCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+CiMjIyAxLjMgTm90YWJsZSBtaWNyb2JlIGRldGVjdGVkCjwvZGl2PgoKKiAqRXViYWN0ZXJpdW0gcmVjdGFsZSo6CiAgKiBSZWNlbnRseSBzaG93biB0byBwcm9kdWNlIGEgbW9sZWN1bGUgKGxhdXJveWwgdHJ5cHRhbWluZSkgdGhhdCBzdHJ1Y3R1cmFsbHkgbWltaWNzIGEgc2lnbmFsaW5nIG1vbGVjdWxlIHByb2R1Y2VkIGJ5IGh1bWFuczsgbGF1cm95bCB0cnlwdGFtaW5lIGluaGliaXRzIGEgaHVtYW4gcHJvdGVpbiBpbnZvbHZlZCBpbiB0cmlnZ2VyaW5nIGFuIGltbXVuZSByZXNwb25zZSBhbmQgaW5mbGFtbWF0aW9uIChDaGFuZyAqZXQgYWwqLiwgMjAyMSkKICAqIE1vc3QgcmVsYXRpdmVseSBhYnVuZGFudCBtaWNyb2JlIGluIENhcFNjYW4gc2FtcGxlICh+MTElKQogIAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuNCBSZWZlcmVuY2VzCjwvZGl2PgoKQ2hhbmcsIEYuWS4sIFNpdXRpLCBQLiwgTGF1cmVudCwgUy4sIFdpbGxpYW1zLCBULiwgR2xhc3NleSwgRS4sIFNhaWxlciwgQS5XLiwgKmV0IGFsKi4gKDIwMjEpIEd1dC1pbmhhYml0aW5nIENsb3N0cmlkaWEgYnVpbGQgaHVtYW4gR1BDUiBsaWdhbmRzIGJ5IGNvbmp1Z2F0aW5nIG5ldXJvdHJhbnNtaXR0ZXJzIHdpdGggZGlldC0gYW5kIGh1bWFuLWRlcml2ZWQgZmF0dHkgYWNpZHMuICpOYXQgTWljcm9iaW9sKiA2OiA3OTLigJM4MDUu